Skip to content

Conversation

saethlin
Copy link
Member

@saethlin saethlin commented Dec 5, 2024

This PR removes the flag -Zpolymorphize and all the infrastructure in the compiler that exists only to support it, per rust-lang/compiler-team#810.

@rustbot rustbot added A-testsuite Area: The testsuite used to check the correctness of rustc S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. T-bootstrap Relevant to the bootstrap subteam: Rust's build system (x.py and src/bootstrap) T-compiler Relevant to the compiler team, which will review and decide on the PR/issue. labels Dec 5, 2024
@saethlin
Copy link
Member Author

saethlin commented Dec 5, 2024

r? compiler-errors

@saethlin saethlin force-pushed the remove-polymorphization branch from f70a014 to 2c6e802 Compare December 5, 2024 03:52
@saethlin saethlin marked this pull request as ready for review December 5, 2024 03:52
@rustbot
Copy link
Collaborator

rustbot commented Dec 5, 2024

Some changes occurred to the CTFE / Miri interpreter

cc @rust-lang/miri

Some changes occurred to the CTFE machinery

cc @rust-lang/wg-const-eval

Some changes occurred in compiler/rustc_codegen_gcc

cc @antoyo, @GuillaumeGomez

Some changes occurred in compiler/rustc_codegen_cranelift

cc @bjorn3

@compiler-errors
Copy link
Member

r=me after it's green

@bors rollup=never

(since it likely has a net-positive perf result, but let's not block this PR on perf.)

@rust-log-analyzer

This comment has been minimized.

@compiler-errors
Copy link
Member

looks like you've got an unnecessary import for TypeVisitableExt

@saethlin saethlin force-pushed the remove-polymorphization branch from 2c6e802 to 7337610 Compare December 5, 2024 04:13
@saethlin saethlin force-pushed the remove-polymorphization branch 2 times, most recently from a879158 to eb4a656 Compare December 5, 2024 16:16
@rustbot
Copy link
Collaborator

rustbot commented Dec 5, 2024

rust-analyzer is developed in its own repository. If possible, consider making this change to rust-lang/rust-analyzer instead.

cc @rust-lang/rust-analyzer

@saethlin
Copy link
Member Author

saethlin commented Dec 5, 2024

@compiler-errors I'm not 100% sure I rebased properly over the change in compiler/rustc_ty_utils/src/abi.rs.

I also expanded my search a bit and found a few more mentions of polymorphization to delete. Can you take a look?

@compiler-errors
Copy link
Member

lgtm, r=me

@saethlin
Copy link
Member Author

saethlin commented Dec 5, 2024

@bors r=compiler-errors

@bors
Copy link
Collaborator

bors commented Dec 5, 2024

📌 Commit eb4a656 has been approved by compiler-errors

It is now in the queue for this repository.

@bors bors added S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. and removed S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. labels Dec 5, 2024
@jieyouxu jieyouxu added the relnotes Marks issues that should be documented in the release notes of the next release. label Dec 5, 2024
@bors
Copy link
Collaborator

bors commented Dec 6, 2024

☔ The latest upstream changes (presumably #133089) made this pull request unmergeable. Please resolve the merge conflicts.

@bors bors removed the S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. label Dec 6, 2024
@bors bors added S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. and removed S-waiting-on-author Status: This is awaiting some action (such as code changes or more information) from the author. labels Dec 6, 2024
@bors
Copy link
Collaborator

bors commented Dec 7, 2024

⌛ Testing commit 711c8cc with merge ca13e91...

@bors
Copy link
Collaborator

bors commented Dec 7, 2024

☀️ Test successful - checks-actions
Approved by: compiler-errors
Pushing ca13e91 to master...

@bors bors added the merged-by-bors This PR was explicitly merged by bors. label Dec 7, 2024
@bors bors merged commit ca13e91 into rust-lang:master Dec 7, 2024
7 checks passed
@rustbot rustbot added this to the 1.85.0 milestone Dec 7, 2024
@rust-timer
Copy link
Collaborator

Finished benchmarking commit (ca13e91): comparison URL.

Overall result: ❌✅ regressions and improvements - please read the text below

Our benchmarks found a performance regression caused by this PR.
This might be an actual regression, but it can also be just noise.

Next Steps:

  • If the regression was expected or you think it can be justified,
    please write a comment with sufficient written justification, and add
    @rustbot label: +perf-regression-triaged to it, to mark the regression as triaged.
  • If you think that you know of a way to resolve the regression, try to create
    a new PR with a fix for the regression.
  • If you do not understand the regression or you think that it is just noise,
    you can ask the @rust-lang/wg-compiler-performance working group for help (members of this group
    were already notified of this PR).

@rustbot label: +perf-regression
cc @rust-lang/wg-compiler-performance

Instruction count

This is the most reliable metric that we have; it was used to determine the overall result at the top of this comment. However, even this metric can sometimes exhibit noise.

mean range count
Regressions ❌
(primary)
- - 0
Regressions ❌
(secondary)
0.5% [0.3%, 0.7%] 6
Improvements ✅
(primary)
-0.5% [-1.3%, -0.1%] 91
Improvements ✅
(secondary)
-0.7% [-1.7%, -0.3%] 21
All ❌✅ (primary) -0.5% [-1.3%, -0.1%] 91

Max RSS (memory usage)

Results (primary -0.9%, secondary -0.5%)

This is a less reliable metric that may be of interest but was not used to determine the overall result at the top of this comment.

mean range count
Regressions ❌
(primary)
- - 0
Regressions ❌
(secondary)
3.5% [3.5%, 3.5%] 1
Improvements ✅
(primary)
-0.9% [-1.1%, -0.6%] 6
Improvements ✅
(secondary)
-2.5% [-2.5%, -2.5%] 2
All ❌✅ (primary) -0.9% [-1.1%, -0.6%] 6

Cycles

Results (primary -2.0%, secondary -3.8%)

This is a less reliable metric that may be of interest but was not used to determine the overall result at the top of this comment.

mean range count
Regressions ❌
(primary)
- - 0
Regressions ❌
(secondary)
- - 0
Improvements ✅
(primary)
-2.0% [-2.5%, -1.5%] 5
Improvements ✅
(secondary)
-3.8% [-6.1%, -1.1%] 10
All ❌✅ (primary) -2.0% [-2.5%, -1.5%] 5

Binary size

This benchmark run did not return any relevant results for this metric.

Bootstrap: 768.721s -> 769.879s (0.15%)
Artifact size: 330.95 MiB -> 330.83 MiB (-0.04%)

@rustbot rustbot added the perf-regression Performance regression. label Dec 7, 2024
@lqd
Copy link
Member

lqd commented Dec 7, 2024

Massively positive results, regressions are small and in stress tests only, marking as triaged.

@rustbot label: +perf-regression-triaged

@rustbot rustbot added the perf-regression-triaged The performance regression has been triaged. label Dec 7, 2024
@nnethercote
Copy link
Contributor

Is it possible to briefly summarize the source of the performance improvements? I'm just curious.

@saethlin saethlin deleted the remove-polymorphization branch December 7, 2024 13:15
@saethlin
Copy link
Member Author

saethlin commented Dec 7, 2024

This PR deletes an often-called query and its associated table. I believe most of the improvement is caused by having less nodes in the query dep graph. Even though all those queries are effectively no-ops. (I would call this query overhead)

@nnethercote
Copy link
Contributor

Was it an oversight that the query was being called despite not doing anything useful? Or was it more complicated than that?

@bjorn3
Copy link
Member

bjorn3 commented Dec 7, 2024

The result of the unused_generic_params query was previously encoded in the crate metadata in case a crate that depends on the local crate uses -Zpolymorphize.

@compiler-errors
Copy link
Member

I feel like the code perhaps couldve been written to not touch the polymorphization codepaths unless the feature was enabled, though not totally certain given polymorphization's interaction with codegen 🤔

not certain if the unused parameters query couldve been pushed onto the crates that actually needed it (ie the ones build with Zpolymorphize)

wip-sync pushed a commit to NetBSD/pkgsrc-wip that referenced this pull request Feb 23, 2025
Pkgsrc changes relative to rust184:

 * patch reorganization to deal with new version
   of upstream vendored crates, checksum updates.

Version 1.85.0 (2025-02-20)
==========================

Language
--------
- [The 2024 Edition is now stable.]
  (rust-lang/rust#133349)
  See [the edition guide]
  (https://doc.rust-lang.org/nightly/edition-guide/rust-2024/index.html)
  for more details.
- [Stabilize async closures]
  (rust-lang/rust#132706)
  See [RFC 3668]
  (https://rust-lang.github.io/rfcs/3668-async-closures.html) for more details.
- [Stabilize `#[diagnostic::do_not_recommend]`]
  (rust-lang/rust#132056)
- [Add `unpredictable_function_pointer_comparisons` lint to warn
  against function pointer comparisons]
  (rust-lang/rust#118833)
- [Lint on combining `#[no_mangle]` and `#[export_name]` attributes.]
  (rust-lang/rust#131558)

Compiler
--------
- [The unstable flag `-Zpolymorphize` has been removed]
  (rust-lang/rust#133883), see
  rust-lang/compiler-team#810 for some
  background.

Platform Support
----------------
- [Promote `powerpc64le-unknown-linux-musl` to tier 2 with host tools]
  (rust-lang/rust#133801)

Refer to Rust's [platform support page][platform-support-doc]
for more information on Rust's tiered platform support.

Libraries
---------
- [Panics in the standard library now have a leading `library/` in their path]
  (rust-lang/rust#132390)
- [`std::env::home_dir()` on Windows now ignores the non-standard
  `$HOME` environment variable]
  (rust-lang/rust#132515)

  It will be un-deprecated in a subsequent release.
- [Add `AsyncFn*` to the prelude in all editions.]
  (rust-lang/rust#132611)

Stabilized APIs
---------------

- [`BuildHasherDefault::new`]
  (https://doc.rust-lang.org/stable/std/hash/struct.BuildHasherDefault.html#method.new)
- [`ptr::fn_addr_eq`]
  (https://doc.rust-lang.org/std/ptr/fn.fn_addr_eq.html)
- [`io::ErrorKind::QuotaExceeded`]
  (https://doc.rust-lang.org/stable/std/io/enum.ErrorKind.html#variant.QuotaExceeded)
- [`io::ErrorKind::CrossesDevices`]
  (https://doc.rust-lang.org/stable/std/io/enum.ErrorKind.html#variant.CrossesDevices)
- [`{float}::midpoint`]
  (https://doc.rust-lang.org/core/primitive.f32.html#method.midpoint)
- [Unsigned `{integer}::midpoint`]
  (https://doc.rust-lang.org/std/primitive.u64.html#method.midpoint)
- [`NonZeroU*::midpoint`]
  (https://doc.rust-lang.org/std/num/type.NonZeroU32.html#method.midpoint)
- [impl `std::iter::Extend` for tuples with arity 1 through 12]
  (https://doc.rust-lang.org/stable/std/iter/trait.Extend.html#impl-Extend%3C(A,)%3E-for-(EA,))
- [`FromIterator<(A, ...)>` for tuples with arity 1 through 12]
  (https://doc.rust-lang.org/stable/std/iter/trait.FromIterator.html#impl-FromIterator%3C(EA,)%3E-for-(A,))
- [`std::task::Waker::noop`]
  (https://doc.rust-lang.org/stable/std/task/struct.Waker.html#method.noop)

These APIs are now stable in const contexts:

- [`mem::size_of_val`]
  (https://doc.rust-lang.org/stable/std/mem/fn.size_of_val.html)
- [`mem::align_of_val`]
  (https://doc.rust-lang.org/stable/std/mem/fn.align_of_val.html)
- [`Layout::for_value`]
  (https://doc.rust-lang.org/stable/std/alloc/struct.Layout.html#method.for_value)
- [`Layout::align_to`]
  (https://doc.rust-lang.org/stable/std/alloc/struct.Layout.html#method.align_to)
- [`Layout::pad_to_align`]
  (https://doc.rust-lang.org/stable/std/alloc/struct.Layout.html#method.pad_to_align)
- [`Layout::extend`]
  (https://doc.rust-lang.org/stable/std/alloc/struct.Layout.html#method.extend)
- [`Layout::array`]
  (https://doc.rust-lang.org/stable/std/alloc/struct.Layout.html#method.array)
- [`std::mem::swap`]
  (https://doc.rust-lang.org/stable/std/mem/fn.swap.html)
- [`std::ptr::swap`]
  (https://doc.rust-lang.org/stable/std/ptr/fn.swap.html)
- [`NonNull::new`]
  (https://doc.rust-lang.org/stable/std/ptr/struct.NonNull.html#method.new)
- [`HashMap::with_hasher`]
  (https://doc.rust-lang.org/stable/std/collections/struct.HashMap.html#method.with_hasher)
- [`HashSet::with_hasher`]
  (https://doc.rust-lang.org/stable/std/collections/struct.HashSet.html#method.with_hasher)
- [`BuildHasherDefault::new`]
  (https://doc.rust-lang.org/stable/std/hash/struct.BuildHasherDefault.html#method.new)
- [`<float>::recip`]
  (https://doc.rust-lang.org/stable/std/primitive.f32.html#method.recip)
- [`<float>::to_degrees`]
  (https://doc.rust-lang.org/stable/std/primitive.f32.html#method.to_degrees)
- [`<float>::to_radians`]
  (https://doc.rust-lang.org/stable/std/primitive.f32.html#method.to_radians)
- [`<float>::max`]
  (https://doc.rust-lang.org/stable/std/primitive.f32.html#method.max)
- [`<float>::min`]
  (https://doc.rust-lang.org/stable/std/primitive.f32.html#method.min)
- [`<float>::clamp`]
  (https://doc.rust-lang.org/stable/std/primitive.f32.html#method.clamp)
- [`<float>::abs`]
  (https://doc.rust-lang.org/stable/std/primitive.f32.html#method.abs)
- [`<float>::signum`]
  (https://doc.rust-lang.org/stable/std/primitive.f32.html#method.signum)
- [`<float>::copysign`]
  (https://doc.rust-lang.org/stable/std/primitive.f32.html#method.copysign)
- [`MaybeUninit::write`]
  (https://doc.rust-lang.org/stable/std/mem/union.MaybeUninit.html#method.write)

Cargo
-----
- [Add future-incompatibility warning against keywords in cfgs and
  add raw-idents] (rust-lang/cargo#14671)
- [Stabilize higher precedence trailing flags]
  (rust-lang/cargo#14900)
- [Pass `CARGO_CFG_FEATURE` to build scripts]
  (rust-lang/cargo#14902)

Rustdoc
-----
- [Doc comment on impl blocks shows the first line, even when the
  impl block is collapsed] (rust-lang/rust#132155)

Compatibility Notes
-------------------
- [`rustc` no longer treats the `test` cfg as a well known
  check-cfg] (rust-lang/rust#131729),
  instead it is up to the build systems and users of
  `--check-cfg`[^check-cfg] to set it as a well known cfg using
  `--check-cfg=cfg(test)`.

  This is done to enable build systems like Cargo to set it
  conditionally, as not all source files are suitable for unit
  tests.

  [Cargo (for now) unconditionally sets the `test` cfg as a well known cfg]
  (rust-lang/cargo#14963).
  [^check-cfg]: https://doc.rust-lang.org/nightly/rustc/check-cfg.html

- [Disable potentially incorrect type inference if there are trivial
  and non-trivial where-clauses]
  (rust-lang/rust#132325)

- `std::env::home_dir()` has been deprecated for years, because it
  can give surprising results in some Windows configurations if the
  `HOME` environment variable is set (which is not the normal
  configuration on Windows). We had previously avoided changing its
  behavior, out of concern for compatibility with code depending on
  this non-standard configuration. Given how long this function has
  been deprecated, we're now fixing its behavior as a bugfix. A
  subsequent release will remove the deprecation for this function.

- [Make `core::ffi::c_char` signedness more closely match that of
  the platform-default `char`]
  (rust-lang/rust#132975)

  This changed `c_char` from an `i8` to `u8` or vice versa on many
  Tier 2 and 3 targets (mostly Arm and RISC-V embedded targets).
  The new definition may result in compilation failures but fixes
  compatibility issues with C.

  The `libc` crate matches this change as of its 0.2.169 release.

- [When compiling a nested `macro_rules` macro from an external
  crate, the content of the inner `macro_rules` is now built with
  the edition of the external crate, not the local crate.]
  (rust-lang/rust#133274)
- [Increase `sparcv9-sun-solaris` and `x86_64-pc-solaris` Solaris
  baseline to 11.4.]
  (rust-lang/rust#133293)
- [Show `abi_unsupported_vector_types` lint in future breakage reports]
  (rust-lang/rust#133374)
- [Error if multiple super-trait instantiations of `dyn Trait` need
  associated types to be specified but only one is provided]
  (rust-lang/rust#133392)
- [Change `powerpc64-ibm-aix` default `codemodel` to large]
  (rust-lang/rust#133811)

Internal Changes
----------------

These changes do not affect any public interfaces of Rust, but they
represent significant improvements to the performance or internals
of rustc and related tools.

- [Build `x86_64-unknown-linux-gnu` with LTO for C/C++ code (e.g., `jemalloc`)]
  (rust-lang/rust#134690)
tmeijn pushed a commit to tmeijn/dotfiles that referenced this pull request Feb 26, 2025
This MR contains the following updates:

| Package | Update | Change |
|---|---|---|
| [rust](https://github.com/rust-lang/rust) | minor | `1.84.1` -> `1.85.0` |

MR created with the help of [el-capitano/tools/renovate-bot](https://gitlab.com/el-capitano/tools/renovate-bot).

**Proposed changes to behavior should be submitted there as MRs.**

---

### Release Notes

<details>
<summary>rust-lang/rust (rust)</summary>

### [`v1.85.0`](https://github.com/rust-lang/rust/blob/HEAD/RELEASES.md#Version-1850-2025-02-20)

[Compare Source](rust-lang/rust@1.84.1...1.85.0)

\==========================

<a id="1.85.0-Language"></a>

## Language

-   [The 2024 Edition is now stable.](rust-lang/rust#133349)
    See [the edition guide](https://doc.rust-lang.org/nightly/edition-guide/rust-2024/index.html) for more details.
-   [Stabilize async closures](rust-lang/rust#132706)
    See [RFC 3668](https://rust-lang.github.io/rfcs/3668-async-closures.html) for more details.
-   [Stabilize `#[diagnostic::do_not_recommend]`](rust-lang/rust#132056)
-   [Add `unpredictable_function_pointer_comparisons` lint to warn against function pointer comparisons](rust-lang/rust#118833)
-   [Lint on combining `#[no_mangle]` and `#[export_name]` attributes.](rust-lang/rust#131558)

<a id="1.85.0-Compiler"></a>

## Compiler

-   [The unstable flag `-Zpolymorphize` has been removed](rust-lang/rust#133883), see rust-lang/compiler-team#810 for some background.

<a id="1.85.0-Platform-Support"></a>

## Platform Support

-   [Promote `powerpc64le-unknown-linux-musl` to tier 2 with host tools](rust-lang/rust#133801)

Refer to Rust's \[platform support page]\[platform-support-doc]
for more information on Rust's tiered platform support.

<a id="1.85.0-Libraries"></a>

## Libraries

-   [Panics in the standard library now have a leading `library/` in their path](rust-lang/rust#132390)
-   [`std::env::home_dir()` on Windows now ignores the non-standard `$HOME` environment variable](rust-lang/rust#132515)

    It will be un-deprecated in a subsequent release.
-   [Add `AsyncFn*` to the prelude in all editions.](rust-lang/rust#132611)

<a id="1.85.0-Stabilized-APIs"></a>

## Stabilized APIs

-   [`BuildHasherDefault::new`](https://doc.rust-lang.org/stable/std/hash/struct.BuildHasherDefault.html#method.new)
-   [`ptr::fn_addr_eq`](https://doc.rust-lang.org/std/ptr/fn.fn_addr_eq.html)
-   [`io::ErrorKind::QuotaExceeded`](https://doc.rust-lang.org/stable/std/io/enum.ErrorKind.html#variant.QuotaExceeded)
-   [`io::ErrorKind::CrossesDevices`](https://doc.rust-lang.org/stable/std/io/enum.ErrorKind.html#variant.CrossesDevices)
-   [`{float}::midpoint`](https://doc.rust-lang.org/core/primitive.f32.html#method.midpoint)
-   [Unsigned `{integer}::midpoint`](https://doc.rust-lang.org/std/primitive.u64.html#method.midpoint)
-   [`NonZeroU*::midpoint`](https://doc.rust-lang.org/std/num/type.NonZeroU32.html#method.midpoint)
-   [impl `std::iter::Extend` for tuples with arity 1 through 12](https://doc.rust-lang.org/stable/std/iter/trait.Extend.html#impl-Extend%3C\(A,\)%3E-for-\(EA,\))
-   [`FromIterator<(A, ...)>` for tuples with arity 1 through 12](https://doc.rust-lang.org/stable/std/iter/trait.FromIterator.html#impl-FromIterator%3C\(EA,\)%3E-for-\(A,\))
-   [`std::task::Waker::noop`](https://doc.rust-lang.org/stable/std/task/struct.Waker.html#method.noop)

These APIs are now stable in const contexts:

-   [`mem::size_of_val`](https://doc.rust-lang.org/stable/std/mem/fn.size_of_val.html)
-   [`mem::align_of_val`](https://doc.rust-lang.org/stable/std/mem/fn.align_of_val.html)
-   [`Layout::for_value`](https://doc.rust-lang.org/stable/std/alloc/struct.Layout.html#method.for_value)
-   [`Layout::align_to`](https://doc.rust-lang.org/stable/std/alloc/struct.Layout.html#method.align_to)
-   [`Layout::pad_to_align`](https://doc.rust-lang.org/stable/std/alloc/struct.Layout.html#method.pad_to_align)
-   [`Layout::extend`](https://doc.rust-lang.org/stable/std/alloc/struct.Layout.html#method.extend)
-   [`Layout::array`](https://doc.rust-lang.org/stable/std/alloc/struct.Layout.html#method.array)
-   [`std::mem::swap`](https://doc.rust-lang.org/stable/std/mem/fn.swap.html)
-   [`std::ptr::swap`](https://doc.rust-lang.org/stable/std/ptr/fn.swap.html)
-   [`NonNull::new`](https://doc.rust-lang.org/stable/std/ptr/struct.NonNull.html#method.new)
-   [`HashMap::with_hasher`](https://doc.rust-lang.org/stable/std/collections/struct.HashMap.html#method.with_hasher)
-   [`HashSet::with_hasher`](https://doc.rust-lang.org/stable/std/collections/struct.HashSet.html#method.with_hasher)
-   [`BuildHasherDefault::new`](https://doc.rust-lang.org/stable/std/hash/struct.BuildHasherDefault.html#method.new)
-   [`<float>::recip`](https://doc.rust-lang.org/stable/std/primitive.f32.html#method.recip)
-   [`<float>::to_degrees`](https://doc.rust-lang.org/stable/std/primitive.f32.html#method.to_degrees)
-   [`<float>::to_radians`](https://doc.rust-lang.org/stable/std/primitive.f32.html#method.to_radians)
-   [`<float>::max`](https://doc.rust-lang.org/stable/std/primitive.f32.html#method.max)
-   [`<float>::min`](https://doc.rust-lang.org/stable/std/primitive.f32.html#method.min)
-   [`<float>::clamp`](https://doc.rust-lang.org/stable/std/primitive.f32.html#method.clamp)
-   [`<float>::abs`](https://doc.rust-lang.org/stable/std/primitive.f32.html#method.abs)
-   [`<float>::signum`](https://doc.rust-lang.org/stable/std/primitive.f32.html#method.signum)
-   [`<float>::copysign`](https://doc.rust-lang.org/stable/std/primitive.f32.html#method.copysign)
-   [`MaybeUninit::write`](https://doc.rust-lang.org/stable/std/mem/union.MaybeUninit.html#method.write)

<a id="1.85.0-Cargo"></a>

## Cargo

-   [Add future-incompatibility warning against keywords in cfgs and add raw-idents](rust-lang/cargo#14671)
-   [Stabilize higher precedence trailing flags](rust-lang/cargo#14900)
-   [Pass `CARGO_CFG_FEATURE` to build scripts](rust-lang/cargo#14902)

<a id="1.85.0-Rustdoc"></a>

## Rustdoc

-   [Doc comment on impl blocks shows the first line, even when the impl block is collapsed](rust-lang/rust#132155)

<a id="1.85.0-Compatibility-Notes"></a>

## Compatibility Notes

-   [`rustc` no longer treats the `test` cfg as a well known check-cfg](rust-lang/rust#131729), instead it is up to the build systems and users of `--check-cfg`\[^check-cfg] to set it as a well known cfg using `--check-cfg=cfg(test)`.

    This is done to enable build systems like Cargo to set it conditionally, as not all source files are suitable for unit tests.
    [Cargo (for now) unconditionally sets the `test` cfg as a well known cfg](rust-lang/cargo#14963).
    \[^check-cfg]: https://doc.rust-lang.org/nightly/rustc/check-cfg.html
-   [Disable potentially incorrect type inference if there are trivial and non-trivial where-clauses](rust-lang/rust#132325)
-   `std::env::home_dir()` has been deprecated for years, because it can give surprising results in some Windows configurations if the `HOME` environment variable is set (which is not the normal configuration on Windows). We had previously avoided changing its behavior, out of concern for compatibility with code depending on this non-standard configuration. Given how long this function has been deprecated, we're now fixing its behavior as a bugfix. A subsequent release will remove the deprecation for this function.
-   [Make `core::ffi::c_char` signedness more closely match that of the platform-default `char`](rust-lang/rust#132975)

    This changed `c_char` from an `i8` to `u8` or vice versa on many Tier 2 and 3
    targets (mostly Arm and RISC-V embedded targets). The new definition may
    result in compilation failures but fixes compatibility issues with C.

    The `libc` crate matches this change as of its 0.2.169 release.
-   [When compiling a nested `macro_rules` macro from an external crate, the content of the inner `macro_rules` is now built with the edition of the external crate, not the local crate.](rust-lang/rust#133274)
-   [Increase `sparcv9-sun-solaris` and `x86_64-pc-solaris` Solaris baseline to 11.4.](rust-lang/rust#133293)
-   [Show `abi_unsupported_vector_types` lint in future breakage reports](rust-lang/rust#133374)
-   [Error if multiple super-trait instantiations of `dyn Trait` need associated types to be specified but only one is provided](rust-lang/rust#133392)
-   [Change `powerpc64-ibm-aix` default `codemodel` to large](rust-lang/rust#133811)

<a id="1.85.0-Internal-Changes"></a>

## Internal Changes

These changes do not affect any public interfaces of Rust, but they represent
significant improvements to the performance or internals of rustc and related
tools.

-   [Build `x86_64-unknown-linux-gnu` with LTO for C/C++ code (e.g., `jemalloc`)](rust-lang/rust#134690)

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

♻ **Rebasing**: Whenever MR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 **Ignore**: Close this MR and you won't be reminded about this update again.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this MR, check this box

---

This MR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzOS4xODAuMyIsInVwZGF0ZWRJblZlciI6IjM5LjE4MC4zIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6WyJSZW5vdmF0ZSBCb3QiXX0=-->
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
A-testsuite Area: The testsuite used to check the correctness of rustc merged-by-bors This PR was explicitly merged by bors. perf-regression Performance regression. perf-regression-triaged The performance regression has been triaged. relnotes Marks issues that should be documented in the release notes of the next release. S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. T-bootstrap Relevant to the bootstrap subteam: Rust's build system (x.py and src/bootstrap) T-compiler Relevant to the compiler team, which will review and decide on the PR/issue.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

10 participants